package com.test.tcp.login.twoWay;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 模拟登录(双向)
 * 创建服务器
 * 1.使用serverSocket创建服务器,并指定端口
 * 2.阻塞式等待连接accept()方法
 * 3.操作:输入输出流操作
 * 4.释放资源
 *
 * @create: 2019-05-29 22:29
 **/
public class LoginTwoWayServer {

    public static void main(String[] args) throws IOException {
        System.out.println("服务器端已启动...");

        //1.使用serverSocket创建服务器,并指定端口
        ServerSocket socket = new ServerSocket(8888);

        //2.阻塞式等待连接accept()方法
        Socket client = socket.accept();
        System.out.println("一个客户端请求了服务器");

        //3.操作:输入输出流操作(对于服务器端来说是使用输入流)
        DataInputStream dis = new DataInputStream(client.getInputStream());

        //用户名及密码
        String uname = "";
        String upwd = "";

        //获取流内的内容
        String data = dis.readUTF();
        String[] user = data.split("&");
        for (String userInfo : user) {
            String[] info = userInfo.split("=");
            System.out.println(info[0] + "-->" + info[1]);
            if (info[0].equals("uname")) {
                uname = info[1];
            } else {
                upwd = info[1];
            }
        }

        //输出流,输出内容到客户端
        DataOutputStream dos = new DataOutputStream(client.getOutputStream());

        //校验
        if (uname.equals("我怎能不变态") && upwd.equals("非处娶不得")) {
            //成功
            dos.writeUTF("登录成功");
        } else {
            //失败
            dos.writeUTF("登录失败");
        }
        dos.flush();

        //4.释放资源
        dis.close();
        client.close();
        socket.close();

    }


}
